Include package version along with kernel release in stack traces
authorBen Hutchings <ben@decadent.org.uk>
Tue, 24 Jul 2012 02:13:10 +0000 (03:13 +0100)
committerSalvatore Bonaccorso <carnil@debian.org>
Mon, 12 Aug 2024 18:18:17 +0000 (20:18 +0200)
Forwarded: not-needed

For distribution binary packages we assume
$DISTRIBUTION_OFFICIAL_BUILD, $DISTRIBUTOR and $DISTRIBUTION_VERSION
are set.

Gbp-Pq: Topic debian
Gbp-Pq: Name version.patch

Makefile
arch/powerpc/kernel/process.c
arch/x86/um/sysrq_64.c
kernel/hung_task.c
lib/dump_stack.c

index aec5cc0babf8cc498ec117b2447d8cca5664190b..f72db20bae1a6e6e677f4d015cbe03c63e6c362c 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -1201,7 +1201,8 @@ PHONY += prepare archprepare
 
 archprepare: outputmakefile archheaders archscripts scripts include/config/kernel.release \
        asm-generic $(version_h) include/generated/utsrelease.h \
-       include/generated/compile.h include/generated/autoconf.h remove-stale-files
+       include/generated/compile.h include/generated/autoconf.h \
+       include/generated/package.h remove-stale-files
 
 prepare0: archprepare
        $(Q)$(MAKE) $(build)=scripts/mod
@@ -1259,6 +1260,16 @@ define filechk_version.h
        echo \#define LINUX_VERSION_SUBLEVEL $(SUBLEVEL)
 endef
 
+ifneq ($(DISTRIBUTION_OFFICIAL_BUILD),)
+define filechk_package.h
+       echo \#define LINUX_PACKAGE_ID \" $(DISTRIBUTOR) $(DISTRIBUTION_VERSION)\"
+endef
+else
+define filechk_package.h
+       echo \#define LINUX_PACKAGE_ID \"\"
+endef
+endif
+
 $(version_h): private PATCHLEVEL := $(or $(PATCHLEVEL), 0)
 $(version_h): private SUBLEVEL := $(or $(SUBLEVEL), 0)
 $(version_h): FORCE
@@ -1273,6 +1284,9 @@ filechk_compile.h = $(srctree)/scripts/mkcompile_h \
 include/generated/compile.h: FORCE
        $(call filechk,compile.h)
 
+include/generated/package.h: $(srctree)/Makefile FORCE
+       $(call filechk,package.h)
+
 PHONY += headerdep
 headerdep:
        $(Q)find $(srctree)/include/ -name '*.h' | xargs --max-args 1 \
index a7671786764b60639c8d3b436964b795096a65e0..e1140567f49ef8078d923f96420eff9f3f4ae373 100644 (file)
@@ -38,6 +38,7 @@
 #include <linux/uaccess.h>
 #include <linux/pkeys.h>
 #include <linux/seq_buf.h>
+#include <generated/package.h>
 
 #include <asm/interrupt.h>
 #include <asm/io.h>
@@ -1562,8 +1563,9 @@ static void __show_regs(struct pt_regs *regs)
 
        printk("NIP:  "REG" LR: "REG" CTR: "REG"\n",
               regs->nip, regs->link, regs->ctr);
-       printk("REGS: %px TRAP: %04lx   %s  (%s)\n",
-              regs, regs->trap, print_tainted(), init_utsname()->release);
+       printk("REGS: %px TRAP: %04lx   %s  (%s%s)\n",
+              regs, regs->trap, print_tainted(), init_utsname()->release,
+              LINUX_PACKAGE_ID);
        printk("MSR:  "REG" ", regs->msr);
        print_msr_bits(regs->msr);
        pr_cont("  CR: %08lx  XER: %08lx\n", regs->ccr, regs->xer);
index 0bf6de40abffe1489861c9d57cc0155533f4cc1a..0782c4d6dee72ce75d0ae234cdd844126523e8a0 100644 (file)
@@ -10,6 +10,7 @@
 #include <linux/sched.h>
 #include <linux/sched/debug.h>
 #include <linux/utsname.h>
+#include <generated/package.h>
 #include <asm/current.h>
 #include <asm/ptrace.h>
 #include <asm/sysrq.h>
@@ -18,8 +19,9 @@ void show_regs(struct pt_regs *regs)
 {
        printk("\n");
        print_modules();
-       printk(KERN_INFO "Pid: %d, comm: %.20s %s %s\n", task_pid_nr(current),
-               current->comm, print_tainted(), init_utsname()->release);
+       printk(KERN_INFO "Pid: %d, comm: %.20s %s %s%s\n", task_pid_nr(current),
+               current->comm, print_tainted(), init_utsname()->release,
+               LINUX_PACKAGE_ID);
        printk(KERN_INFO "RIP: %04lx:%pS\n", PT_REGS_CS(regs) & 0xffff,
               (void *)PT_REGS_IP(regs));
        printk(KERN_INFO "RSP: %016lx  EFLAGS: %08lx\n", PT_REGS_SP(regs),
index 1d92016b0b3c427afff4caa91c451c81e6858722..80788008d12caffe0c8ab62ca2483e10f9ad51d4 100644 (file)
@@ -24,6 +24,7 @@
 #include <linux/sched/sysctl.h>
 
 #include <trace/events/sched.h>
+#include <generated/package.h>
 
 /*
  * The number of tasks checked:
@@ -132,10 +133,11 @@ static void check_hung_task(struct task_struct *t, unsigned long timeout)
                        sysctl_hung_task_warnings--;
                pr_err("INFO: task %s:%d blocked for more than %ld seconds.\n",
                       t->comm, t->pid, (jiffies - t->last_switch_time) / HZ);
-               pr_err("      %s %s %.*s\n",
+               pr_err("      %s %s %.*s%s\n",
                        print_tainted(), init_utsname()->release,
                        (int)strcspn(init_utsname()->version, " "),
-                       init_utsname()->version);
+                       init_utsname()->version,
+                       LINUX_PACKAGE_ID);
                pr_err("\"echo 0 > /proc/sys/kernel/hung_task_timeout_secs\""
                        " disables this message.\n");
                sched_show_task(t);
index 222c6d6c8281a421b1a58f49b5e11e5048dce784..9fb96795738ce3d132933da61090823e501da097 100644 (file)
@@ -14,6 +14,7 @@
 #include <linux/kexec.h>
 #include <linux/utsname.h>
 #include <linux/stop_machine.h>
+#include <generated/package.h>
 
 static char dump_stack_arch_desc_str[128];
 
@@ -54,13 +55,15 @@ void __init dump_stack_set_arch_desc(const char *fmt, ...)
  */
 void dump_stack_print_info(const char *log_lvl)
 {
-       printk("%sCPU: %d PID: %d Comm: %.20s %s%s %s %.*s" BUILD_ID_FMT "\n",
+       printk("%sCPU: %d PID: %d Comm: %.20s %s%s %s %.*s %s" BUILD_ID_FMT "\n",
               log_lvl, raw_smp_processor_id(), current->pid, current->comm,
               kexec_crash_loaded() ? "Kdump: loaded " : "",
               print_tainted(),
               init_utsname()->release,
               (int)strcspn(init_utsname()->version, " "),
-              init_utsname()->version, BUILD_ID_VAL);
+              init_utsname()->version,
+              LINUX_PACKAGE_ID,
+              BUILD_ID_VAL);
 
        if (dump_stack_arch_desc_str[0] != '\0')
                printk("%sHardware name: %s\n",